package br.com.puertorico.model.querybuilder.annotations;

import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * Define um elemento que tera o valor anexado
 * ao fim da clausula where.
 *
 * @author daniel.camargo
 */
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
@Documented
public @interface JoinClause {

	/**
	 * @return Identificador desta cl&aacute;usula join
	 */
	String id();

	/**
	 * @return O valor a ser inserido ao fim da cl&aacute;usula where.
	 */
	String value();

	/**
	 * @return os ids das outras cl&aacute;usulas join de
	 *         quem esta cl&aacute;usula depende.
	 */
	String[] dependsOn() default "";

	/**
	 * @return Define se esta cl&aacute;usula ser&aacute; sempre
	 *         inclu&iacute;da.
	 */
	boolean alwaysActive() default false;
}
